// pages/index/index.js
const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'),
    profileData: {},
    loading: true,
    unreadCount: 0,
    allocationNotifications: [], // 分工通知列表
    showAllocationModal: false, // 是否显示分工弹窗
    currentAllocation: null, // 当前分工信息
    showNotificationBanner: false, // 是否显示通知横幅
    notificationMessage: '' // 通知消息内容
  },
  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    
    // 检查登录状态
    if (!app.checkLogin()) {
      this.autoLogin()
    } else {
      this.loadProfileData()
    }
  },

  onShow() {
    this.loadProfileData()
    this.getUnreadMessageCount()
    this.checkAllocationNotifications() // 新增：检查分工通知
  },

  // 自动登录
  autoLogin() {
    app.autoLogin().then(() => {
      this.loadProfileData()
    }).catch((err) => {
      console.error('自动登录失败:', err)
      this.setData({
        loading: false
      })
    })
  },

  // 加载个人中心数据
  loadProfileData() {
    app.request({
      url: '/profile'
    }).then((res) => {
      this.setData({
        profileData: res.data,
        loading: false
      })
    }).catch((err) => {
      console.error('获取个人数据失败:', err)
      this.setData({
        loading: false
      })
    })
  },

  // 获取用户信息
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },

  // 获取用户信息
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },

  // 跳转到任务页面
  goToTasks() {
    wx.switchTab({
      url: '/pages/tasks/tasks'
    })
  },

  // 跳转到扫码页面
  goToScan() {
    wx.switchTab({
      url: '/pages/scan/scan'
    })
  },

  // 跳转到报工记录
  goToRecords() {
    wx.navigateTo({
      url: '/pages/records/records'
    })
  },

  // 跳转到工资统计
  goToWage() {
    wx.navigateTo({
      url: '/pages/wage/wage'
    })
  },

  // 跳转到主动报工
  goToActiveReport() {
    wx.navigateTo({
      url: '/pages/active-report/active-report'
    })
  },

  // 测试API
  testAPI() {
    app.request({
      url: '/test'
    }).then((res) => {
      console.log('测试结果:', res.data)
      wx.showModal({
        title: 'API测试结果',
        content: JSON.stringify(res.data, null, 2),
        showCancel: false
      })
    }).catch((err) => {
      console.error('测试失败:', err)
      wx.showToast({
        title: '测试失败',
        icon: 'none'
      })
    })
  },

  // 数据库测试
  dbTest() {
    app.request({
      url: '/dbTest'
    }).then((res) => {
      console.log('数据库测试结果:', res.data)
      wx.showModal({
        title: '数据库测试结果',
        content: JSON.stringify(res.data, null, 2),
        showCancel: false
      })
    }).catch((err) => {
      console.error('数据库测试失败:', err)
      wx.showToast({
        title: '数据库测试失败',
        icon: 'none'
      })
    })
  },

  // 跳转到计时任务
  goToTimeTasks() {
    wx.navigateTo({
      url: '/pages/time-tasks/time-tasks'
    })
  },

  // 跳转到计时报工
  goToTimeReport() {
    wx.navigateTo({
      url: '/pages/time-report/time-report'
    })
  },

  // 跳转到计时记录
  goToTimeRecords() {
    wx.navigateTo({
      url: '/pages/time-records/time-records'
    })
  },

  // 跳转到计时工资
  goToTimeWage() {
    wx.navigateTo({
      url: '/pages/time-wage/time-wage'
    })
  },

  // 跳转到个人中心
  goToProfile() {
    wx.navigateTo({
      url: '/pages/profile/profile'
    })
  },

  // 跳转到消息页面
  goToMessages() {
    wx.navigateTo({
      url: '/pages/messages/messages'
    })
  },

  // 检查服务通知状态
  checkServiceNotificationStatus() {
    // 检查本地存储的授权状态
    const hasAllocation = wx.getStorageSync('service_notification_allocation')
    const hasAudit = wx.getStorageSync('service_notification_audit')
    const hasSystem = wx.getStorageSync('service_notification_system')
    
    this.setData({
      hasServiceNotification: hasAllocation || hasAudit || hasSystem
    })
  },

  // 请求服务通知授权（暂时禁用）
  requestServiceNotification() {
    wx.showToast({
      title: '服务通知功能暂时不可用',
      icon: 'none'
    })
  },

  // 跳转到服务通知设置页面
  goToNotificationSettings() {
    wx.navigateTo({
      url: '/pages/notification-settings/notification-settings'
    })
  },

  // 获取未读消息数量
  getUnreadMessageCount() {
    app.request({
      url: '/getUnreadMessageCount',
      method: 'GET'
    }).then((res) => {
      if (res.code === 1) {
        this.setData({
          unreadCount: res.data.count
        })
      }
    }).catch((err) => {
      console.error('获取未读消息数量失败:', err)
    })
  },

  // 检查分工通知
  checkAllocationNotifications() {
    app.request({
      url: '/getAllocationNotifications',
      method: 'GET'
    }).then((res) => {
      if (res.data.notifications && res.data.notifications.length > 0) {
        this.setData({
          allocationNotifications: res.data.notifications
        })
        
        // 不再显示确认弹窗，只显示通知
        console.log('有分工通知，但不显示确认弹窗')
      }
    }).catch((err) => {
      console.error('获取分工通知失败:', err)
    })
  },

  // 显示通知横幅
  showNotificationBanner(message, type = 'info') {
    this.setData({
      showNotificationBanner: true,
      notificationMessage: message
    })
    
    // 3秒后自动隐藏
    setTimeout(() => {
      this.hideNotificationBanner()
    }, 3000)
  },

  // 隐藏通知横幅
  hideNotificationBanner() {
    this.setData({
      showNotificationBanner: false,
      notificationMessage: ''
    })
  },

  // 显示分工弹窗（已禁用）
  showAllocationModal(allocation) {
    // 不再显示弹窗，只记录日志
    console.log('分工通知:', allocation)
  },

  // 关闭分工弹窗（已禁用）
  closeAllocationModal() {
    // 不再需要关闭弹窗
  },

  // 确认分工（已禁用）
  confirmAllocation() {
    // 不再需要确认分工
    console.log('确认分工功能已禁用')
  },

  // 跳转到任务详情
  goToTaskDetail() {
    const allocation = this.data.currentAllocation
    if (!allocation) return

    this.closeAllocationModal()
    wx.switchTab({
      url: '/pages/tasks/tasks'
    })
  }
}) 